
#ifndef __H_OBJECT_DERIVED
#define __H_OBJECT_DERIVED

#include <list>
#include "combined.h"

/////////////////////////////////////////// accessory object ///////////////////////////////////////////
class Accessory: public Object {
	protected:
		// Protected data...

		// Protected methods...

	public:
		// Constructors...
		Accessory();
		Accessory( Accessory& ref );
		virtual ~Accessory();

		// Operators...
		Accessory& operator = ( Accessory& ref );

		// Public accessor methods...

		// General methods...
		std::string	display();
		virtual void copy( Object* object_in );
		virtual void load( std::istream& read );
		virtual void save( std::ostream& write );

		// Virtual overloads of other Object subtypes...
			// Accessory...
			// Armor...
			// Body_Part...
			// Clothing...
			// Coin...
			// Container...
			// Drink...
			// Food...
			// Furniture...
			// Jewelry...
			// Scroll...
			// Trash...
			// Wand...
			// Weapon...
};

/////////////////////////////////////////// armor object ///////////////////////////////////////////
class Armor: public Object {
	protected:
		// Protected data...

		// Protected methods...

	public:
		// Constructors...
		Armor();
		Armor( Armor& ref );
		virtual ~Armor();

		// Operators...
		Armor& operator = ( Armor& ref );

		// Public accessor methods...

		// General methods...
		std::string	display();
		virtual void copy( Object* object_in );
		virtual void load( std::istream& read );
		virtual void save( std::ostream& write );

		// Virtual overloads of other Object subtypes...
			// Accessory...
			// Armor...
			// Body_Part...
			// Clothing...
			// Coin...
			// Container...
			// Drink...
			// Food...
			// Furniture...
			// Jewelry...
			// Scroll...
			// Trash...
			// Wand...
			// Weapon...
};

/////////////////////////////////////////// body_part object ///////////////////////////////////////////
class Body_Part: public Object {
	protected:
		// Protected data...

		// Protected methods...

	public:
		// Constructors...
		Body_Part();
		Body_Part( Body_Part& ref );
		virtual ~Body_Part();

		// Operators...
		Body_Part& operator = ( Body_Part& ref );

		// Public accessor methods...

		// General methods...
		std::string	display();
		virtual void copy( Object* object_in );
		virtual void load( std::istream& read );
		virtual void save( std::ostream& write );

		// Virtual overloads of other Object subtypes...
			// Accessory...
			// Armor...
			// Body_Part...
			// Clothing...
			// Coin...
			// Container...
			// Drink...
			// Food...
			// Furniture...
			// Jewelry...
			// Scroll...
			// Trash...
			// Wand...
			// Weapon...
};

/////////////////////////////////////////// clothing object ///////////////////////////////////////////
class Clothing: public Object {
	protected:
		// Protected data...

		// Protected methods...

	public:
		// Constructors...
		Clothing();
		Clothing( Clothing& ref );
		virtual ~Clothing();

		// Operators...
		Clothing& operator = ( Clothing& ref );

		// Public accessor methods...

		// General methods...
		std::string	display();
		virtual void copy( Object* object_in );
		virtual void load( std::istream& read );
		virtual void save( std::ostream& write );

		// Virtual overloads of other Object subtypes...
			// Accessory...
			// Armor...
			// Body_Part...
			// Clothing...
			// Coin...
			// Container...
			// Drink...
			// Food...
			// Furniture...
			// Jewelry...
			// Scroll...
			// Trash...
			// Wand...
			// Weapon...
};

/////////////////////////////////////////// coin object ///////////////////////////////////////////
class Coin: public Object {
	protected:
		// Protected data...

		// Protected methods...

	public:
		// Constructors...
		Coin();
		Coin( Coin& ref );
		virtual ~Coin();

		// Operators...
		Coin& operator = ( Coin& ref );

		// Public accessor methods...

		// General methods...
		std::string	display();
		virtual void copy( Object* object_in );
		virtual void load( std::istream& read );
		virtual void save( std::ostream& write );

		// Virtual overloads of other Object subtypes...
			// Accessory...
			// Armor...
			// Body_Part...
			// Clothing...
			// Coin...
			// Container...
			// Drink...
			// Food...
			// Furniture...
			// Jewelry...
			// Scroll...
			// Trash...
			// Wand...
			// Weapon...
};

/////////////////////////////////////////// container object ///////////////////////////////////////////
class Container: public Object {
	protected:
		// Protected data...

		// Protected methods...

	public:
		// Constructors...
		Container();
		Container( Container& ref );
		virtual ~Container();

		// Operators...
		Container& operator = ( Container& ref );

		// Public accessor methods...

		// General methods...
		std::string	display();
		virtual void copy( Object* object_in );
		virtual void load( std::istream& read );
		virtual void save( std::ostream& write );

		// Virtual overloads of other Object subtypes...
			// Accessory...
			// Armor...
			// Body_Part...
			// Clothing...
			// Coin...
			// Container...
			// Drink...
			// Food...
			// Furniture...
			// Jewelry...
			// Scroll...
			// Trash...
			// Wand...
			// Weapon...
};

/////////////////////////////////////////// drink object ///////////////////////////////////////////
class Drink: public Object {
	protected:
		// Protected data...

		// Protected methods...

	public:
		// Constructors...
		Drink();
		Drink( Drink& ref );
		virtual ~Drink();

		// Operators...
		Drink& operator = ( Drink& ref );

		// Public accessor methods...

		// General methods...
		std::string	display();
		virtual void copy( Object* object_in );
		virtual void load( std::istream& read );
		virtual void save( std::ostream& write );

		// Virtual overloads of other Object subtypes...
			// Accessory...
			// Armor...
			// Body_Part...
			// Clothing...
			// Coin...
			// Container...
			// Drink...
			// Food...
			// Furniture...
			// Jewelry...
			// Scroll...
			// Trash...
			// Wand...
			// Weapon...
};

/////////////////////////////////////////// food object ///////////////////////////////////////////
class Food: public Object {
	protected:
		// Protected data...

		// Protected methods...

	public:
		// Constructors...
		Food();
		Food( Food& ref );
		virtual ~Food();

		// Operators...
		Food& operator = ( Food& ref );

		// Public accessor methods...

		// General methods...
		std::string	display();
		virtual void copy( Object* object_in );
		virtual void load( std::istream& read );
		virtual void save( std::ostream& write );

		// Virtual overloads of other Object subtypes...
			// Accessory...
			// Armor...
			// Body_Part...
			// Clothing...
			// Coin...
			// Container...
			// Drink...
			// Food...
			// Furniture...
			// Jewelry...
			// Scroll...
			// Trash...
			// Wand...
			// Weapon...
};

/////////////////////////////////////////// furniture object ///////////////////////////////////////////
class Furniture: public Object {
	protected:
		// Protected data...

		// Protected methods...

	public:
		// Constructors...
		Furniture();
		Furniture( Furniture& ref );
		virtual ~Furniture();

		// Operators...
		Furniture& operator = ( Furniture& ref );

		// Public accessor methods...

		// General methods...
		std::string	display();
		virtual void copy( Object* object_in );
		virtual void load( std::istream& read );
		virtual void save( std::ostream& write );

		// Virtual overloads of other Object subtypes...
			// Accessory...
			// Armor...
			// Body_Part...
			// Clothing...
			// Coin...
			// Container...
			// Drink...
			// Food...
			// Furniture...
			// Jewelry...
			// Scroll...
			// Trash...
			// Wand...
			// Weapon...
};

/////////////////////////////////////////// jewelry object ///////////////////////////////////////////
class Jewelry: public Object {
	protected:
		// Protected data...

		// Protected methods...

	public:
		// Constructors...
		Jewelry();
		Jewelry( Jewelry& ref );
		virtual ~Jewelry();

		// Operators...
		Jewelry& operator = ( Jewelry& ref );

		// Public accessor methods...

		// General methods...
		std::string	display();
		virtual void copy( Object* object_in );
		virtual void load( std::istream& read );
		virtual void save( std::ostream& write );

		// Virtual overloads of other Object subtypes...
			// Accessory...
			// Armor...
			// Body_Part...
			// Clothing...
			// Coin...
			// Container...
			// Drink...
			// Food...
			// Furniture...
			// Jewelry...
			// Scroll...
			// Trash...
			// Wand...
			// Weapon...
};

/////////////////////////////////////////// scroll object ///////////////////////////////////////////
class Scroll: public Object {
	protected:
		// Protected data...

		// Protected methods...

	public:
		// Constructors...
		Scroll();
		Scroll( Scroll& ref );
		virtual ~Scroll();

		// Operators...
		Scroll& operator = ( Scroll& ref );

		// Public accessor methods...

		// General methods...
		std::string	display();
		virtual void copy( Object* object_in );
		virtual void load( std::istream& read );
		virtual void save( std::ostream& write );

		// Virtual overloads of other Object subtypes...
			// Accessory...
			// Armor...
			// Body_Part...
			// Clothing...
			// Coin...
			// Container...
			// Drink...
			// Food...
			// Furniture...
			// Jewelry...
			// Scroll...
			// Trash...
			// Wand...
			// Weapon...
};

/////////////////////////////////////////// trash object ///////////////////////////////////////////
class Trash: public Object {
	protected:
		// Protected data...

		// Protected methods...

	public:
		// Constructors...
		Trash();
		Trash( Trash& ref );
		virtual ~Trash();

		// Operators...
		Trash& operator = ( Trash& ref );

		// Public accessor methods...

		// General methods...
		std::string	display();
		virtual void copy( Object* object_in );
		virtual void load( std::istream& read );
		virtual void save( std::ostream& write );

		// Virtual overloads of other Object subtypes...
			// Accessory...
			// Armor...
			// Body_Part...
			// Clothing...
			// Coin...
			// Container...
			// Drink...
			// Food...
			// Furniture...
			// Jewelry...
			// Scroll...
			// Trash...
			// Wand...
			// Weapon...
};

/////////////////////////////////////////// wand object ///////////////////////////////////////////
class Wand: public Object {
	protected:
		// Protected data...

		// Protected methods...

	public:
		// Constructors...
		Wand();
		Wand( Wand& ref );
		virtual ~Wand();

		// Operators...
		Wand& operator = ( Wand& ref );

		// Public accessor methods...

		// General methods...
		std::string	display();
		virtual void copy( Object* object_in );
		virtual void load( std::istream& read );
		virtual void save( std::ostream& write );

		// Virtual overloads of other Object subtypes...
			// Accessory...
			// Armor...
			// Body_Part...
			// Clothing...
			// Coin...
			// Container...
			// Drink...
			// Food...
			// Furniture...
			// Jewelry...
			// Scroll...
			// Trash...
			// Wand...
			// Weapon...
};

/////////////////////////////////////////// weapon object ///////////////////////////////////////////
class Weapon: public Object {
	protected:
		// Protected data...

		// Protected methods...

	public:
		// Constructors...
		Weapon();
		Weapon( Weapon& ref );
		virtual ~Weapon();

		// Operators...
		Weapon& operator = ( Weapon& ref );

		// Public accessor methods...

		// General methods...
		std::string	display();
		virtual void copy( Object* object_in );
		virtual void load( std::istream& read );
		virtual void save( std::ostream& write );

		// Virtual overloads of other Object subtypes...
			// Accessory...
			// Armor...
			// Body_Part...
			// Clothing...
			// Coin...
			// Container...
			// Drink...
			// Food...
			// Furniture...
			// Jewelry...
			// Scroll...
			// Trash...
			// Wand...
			// Weapon...
};



#endif // #ifndef __H_OBJECT_DERIVED
